・―――――――――――――――――――――――――――――――――――・ /::::::::::::::::::::::::::::::リファレンス:::::::::::::::::::::::::::::::\ ・―――――――――――――――――――――――――――――――――――――・                   定 数 ・―――――――――――――――――――――――――――――――――――――・ |■■定■数■■|■■■■■■■■■■説■■■■■■■明■■■■■■■■■■| |―――――――+―――――――――――――――――――――――――――――| |1文字定数  |1文字定数は、ASCII文字 1文字を『’』          | |       |(シングル・クォート)で囲ったもので、          | |       |その文字のASCIIコード を値とします。           | |       | 例)IF GET='E' THEN PRINT "オワリ";FI           | |       |                             | |文字定数   |文字定数はASCII文字列 を『”』(ダブル・クォート)で   | |       |囲ったもので、PRINT文中 で出力する文字列として使ったり、 | |       |で関数や手続(サブルーチン)の引数に使ったりします。   | |       | 例)"FM-7,FM-11"                    | |       |   ""                         | |       |                             | |10進定数   |拡張K言語は整数型で、数値は−32768〜32767の範囲の整数が | |       |使えます。実数は使えません、               | |       | 例)0                         | |       |   -32768                       | |       |                             | |16進定数   |16進定数は、10進定数と区別するために、          | |       |先頭に『$』を付けます。                 | |       |桁数は4桁以下で、$0〜$FFFFの範囲です。        | |       | 例)$0A                         | |       |   $7FFF                        | ・―――――――――――――――――――――――――――――――――――――・                   ラベル ・―――――――――――――――――――――――――――――――――――――・ |■■ラベル■■|■■■■■■■■■説■■■■■■■明■■■■■■■■■■■| |―――――――+―――――――――――――――――――――――――――――| |ロケーションを|ラベル名は英字で始まる英数字列で、8文字までを認識します。| |指定するラベル|GOTO文、GOSUB文 で参照するラベルは、           | |       |プログラム中の参照したい位置にラベルを書き、       | |       |その後に『;』を書けば定義できます。           | |       |ユーザーのマシン語サブルーチンなどの外部ルーチンを    | |       |コールする場合は、DEF文 でラベル定義をします。      | |       | 例)SUB;                        | |       |   FIRST;                       | |       |                             | |数値を指定する|ラベル名は英字で始まる英数字列で、8文字までを識別し、  | |ラベル    |CONST文 で数値を定義します。               | |       |この数値は変更できません。                | |       | 例)CONST DATA=$3800                  | ・―――――――――――――――――――――――――――――――――――――・                   変 数 ・―――――――――――――――――――――――――――――――――――――・ |■■変■数■■|■■■■■■■■■■説■■■■■■■明■■■■■■■■■■| |―――――――――――――――――――――――――――――――――――――| |変数はプログラム中で使う、変化する値を表す名前です。           | |初期値は不定なので、使う前に必ず初期値をセットしてください。       | |―――――――――――――――――――――――――――――――――――――| |単純変数   |単純変数は英字で始まる英数字列で、8文字まで識別します。 | |       |変数名を拡張K言語の予約語(たとえばFOR,NEXT,GOSUBなど)で| |       |始めた場合の動作は、保障しません。            | |       |代入可能な値は、10進および16進定数の範囲で、       | |       |−32768〜32767($0〜$FFFF)です。           | |       | 例)A                          | |       |   FM-7                        | |       | 注)WENDA(WEND が含まれている)のように予約語で変数名を| |       |   始めた場合の動作は、保障しない。          | |       |   また、ABCDEFGH5とABCDEFGH6は8文字以上なので、   | |       |   同一の変数とみなす。                | |       |                             | |配列変数   |列には2バイト配列と1バイト配列の2種類があります。   | |       |配列の定義は、BASIC のようにDIM文 で宣言する必要は    | |       |ありませんが、配列を格納するメモリ・エリアを、      | |       |プログラム中で指定する必要があります。          | |       |また、配列は1次元のみなので、2次元以上の配列は、    | |       |ユーザー側で要素番号を計算する必要があり、        | |       |要素数の上限もユーザー管理です。             | |       |使い方は『注意・その他』を参照してください。       | |       |                             | |% 変 数  |これはサブルーチン側で、引数の参照をする場合に使います。 | |       |参照は『%』と数値で行ない、数値は引数の順番を示します。 | |       |たとえば、関数・手続側で、                | |       |%3はその関数・手続の引数の3番目を参照します。      | |       |このとき、%変数 に数値を代入しても、メイン(呼び出し先)の| |       |引数列の変数を、変化させることはできません(値渡し)。  | |       |関数・手続き側の値をメインに返すには、          | |       |変化させたい変数のアドレスを引数で与え、         | |       |そのアドレスの内容を変化させる必要があります。      | |       | 例)%1                         | |       |   %5                         | |       |                             | |算術演算子  |+、-、*、/ | ・―――――――――――――――――――――――――――――――――――――・                    式 ・―――――――――――――――――――――――――――――――――――――・ |■■■式■■■|■■■■■■■■■■説■■■■■■■明■■■■■■■■■■| |―――――――+―――――――――――――――――――――――――――――| |関係演算子  |>、>=、<、<=、=、<>                    | |論理演算子  |AND、OR                          | |―――――――――――――――――――――――――――――――――――――| |演算子の意味はBASIC に準じ、優先順位は乗除、加減、論理の順です。     | |ただし、1つの式に2個以上の論理演算子を書くことはできません。      | |除算の結果が整数でない場合、小数点以下は切り捨てられます。        | |また、加減乗除算で、                           | |結果がオーバーフロー(桁あふれ、32768以上、または−32769以下)に     | |なった場合の結果は保障されません。                    | ・―――――――――――――――――――――――――――――――――――――・                一般ステートメント ・―――――――――――――――――――――――――――――――――――――・ |■ステートメント ■■|■■■■■■■■■■説■■■■■■■明■■■■■■■■■■| |―――――――+―――――――――――――――――――――――――――――| |コメント   |コメントは『(*』で始まり『*)』で終わります。       | |       |始まりと終わりの間には、                 | |       |キーボードから入力できるすべての文字を書くことができ、  | |       |その文字列はプログラムには何の影響も与えません。     | |       |コメントをプログラム中に注釈として入れることで、     | |       |リストを見やすくすることができます。           | |       | 例)(* 1モジ ニュウリョク ルーチン *)               | |       |                             | |代入     |書式)変数名=式                      | |       |代入は、右辺の算術式、論理式、関数などの結果を      | |       |左辺の変数に代入するものです。              | |       | 例)A=5                         | |       |   KEKKA=$0F AND $D1                  | |       |   ADDRESS=ADR(X)                   | |       |                             | |CONST     |書式)CONST ラベル=定数1,ラベル=定数…            | |       |数値を表わすラベルを宣語します。『、』で区切ることで   | |       |複数の定義を同時にできます。               | |       | 例)CONST A=5                      | |       |   CONST XMAX=39,YMAX=24                | |       |                             | |DEF      |書式)DEF=定数{,=定数}…                 | |       |外部サブルーチンのスタート・アドレスを宣言します。    | |       |定数は、ユーザー作成のマシン語ルーチンや         | |       |システムの持つサブルーチンの実行開始アドレスです。    | |       | 例)DEF TRREAD=$6E00                  | |       |   DEF TRREAD=$6E00,TPWRITE=$6F00           | |       |                             | |END      |書式)END                         | |       |プログラムの実行を終了します。              | |       |                             | |PRINT     |書式)PRINT 出力要素{,出力要素}…             | |       |PRINT文 は、それに続く出力要素の列をCRTに出力します。 | |       |出力要素とは、変数、式、文字列定数、関数、        | |       |フォーマット関数で、『,』で区切って書くことができます。 | |       |出力フォーマットはすべて、ユーザーが指定する必要があり、 | |       |『/』で改行を、『#』で出力桁数を指定します。      | |       |桁数の指定は、                      | |       | #〈式1〉,〈式2〉                   | |       |で指定し、式2の値を式1の桁数とりで右詰めで出力します。 | |       | 例)10'A=5;B=10                     | |       |   20'PRINT"A=",A,/                  | |       |   30'PRINT"B=",#3,B,/                 | |       |   …このプログラムの出力は次のようになります。    | |       |   A=5                         | |       |   B= 10                       | |       |                             | |IF−THEN〜ELSE|書式)IF条件(式)THEN処理1{ELSE処理2}          | |       |FI条件が真(0以外)の場合処理1を、           | |       |偽(0)の場合処理2を行ないます。            | |       |FIはIFの終了を示し、1つのIF文に対しTHENとFIが必要です。 | |       |ただし、ELSEと処理2は省略することができます。      | |       | 例)変数Xが奇数か偶数かを判定するプログラム。     | |       |   10' IF (X AND $01)=0 THEN PRINT "グウスウ"       | |       |   20' ELSE PRINT "キスウ"        | |       |   30'FI                        | |       |注意)IFとTHENは同じ行でなくてはいけません。       | |       |                             | |FOR−NEXT   |書式)FOR制御変数=初期値 TO 終了値 {STEP 増分値};処理   | |       |   NEXT                        | |       |FORN−NEXT間の処理を繰り返します。            | |       |制御変数は最初に初期値が代入NEXTまでの処理を       | |       |1回行うごとに、増分値が加算されます。          | |       |この繰り返しを制御変数が終了値より大きくなるまで     | |       |(増分値が負の場合小さくなるまで)行いますが、      | |       |BASIC と違い、最初から初期値が終了値より大きい      | |       |(増分値が負の場合小さい)場合は処理を1度も行ないません。| |       |初期値、終了値は定数または式で指定できますが、      | |       |増分値は定数以外使えません、               | |       |なお、STEPが省略された場合、1とみなされます。      | |       |また、1つのFOR に対して必ず対応するNEXTが必要で、    | |       |FOR−NEXT間 の処理で制御変数の値を変更することは     | |       |できません。                       | |       | 例)1からNまでの数を表示します。           | |       |   FORI=1TON                      | |       |   PRINT I,/                      | |       |   NEXTI                        | |       |注1)制御変数の値が整数の範囲を超えるような指定をすると、| |       |   無限ループとなる場合があります。          | |       |注2)FOR−NEXT から外へ、GOTO文、RETURN文で       | |       |   飛び出すことはできません。             | |       |   また、この中に外から飛び込むこともできません。   | |       |                             | |WHILE−WEND  |書式)WHILE 条件                     | |       |   処理                        | |       |   WEND                        | |       |条件が真であれば、WENDまでの処理を実行します。      | |       |WENDで実行の制御は対応するWHILE に戻り、         | |       |再び条件の判定を行なうので、               | |       |条件が真の間はWHILE−WEND間 の処理を繰り返します。    | |       |条件が偽の場合、WEND以降に制御が移るので、        | |       |最初から条件が偽の場合WHILE−WEND間 の処理は       | |       |1度も実行されません。                  | |       |拡張Kコンパイラは、WHILE−WENDループ の制御を      | |       |スタックを使っていないマシン・コードに展開するので、   | |       |WHILE に対するWENDは1簡所に限定されますが、       | |       |WHILE ループからGOTO文で抜けたり、飛び込むことが可能です。| |       |なお、条件は式または文で記述します。           | |       | 例)1がNになるまで表示をします。           | |       |   WHILE I>N                      | |       |   PRINT I>N                      | |       |   I=I+1                        | |       |   WEND                        | |       |                             | |REPEAT−UNTILL|書式)REPEAT                       | |       |   処理                        | |       |   UNTIL 条件                     | |       |条件が真になるまで、REPEAT−UNTIL間 の処理を繰り返します。| |       |プログラムの実行は、UNTILLに続く条件が偽であると、    | |       |対応するREPEAT文にジャンプします。            | |       |もし、条件が真であれば、実行の制御は条件以後の文に移り、 | |       |ループにはなりませんが、                 | |       |条件に対する判定はUNTIL文 で行なうため、         | |       |REPEAT−UNTIL間 の処理は最低1回は行なわれます。     | |       |1つのREPEAT文に対するUNTIL文 は1箇所で、        | |       |WHILEループ 同様GOTO文による飛び込み、飛び出しが可能です。| |       |条件は式または文で記述します。              | |       | 例)Yキーが押されるまでループします。         | |       |   REPEAT                       | |       |   A=GET                        | |       |   UNTIL A='A'                     | |       |                             | |GOTO     |書式)GOTO ラベル                      | |       |ラベルの定義されているロケーションに、          | |       |実行の制御を移します。                  | |       |ラベルの定義はGOTO文の前後どちらにあってもかまいません。 | |       | 例)GOTO DISP1                     | |       |                             | |RETURN    |書式)RETURN                       | |       |サブルーチン、関数、手続を終わり、            | |       |現在実行しているルーチンを呼び出した文の直後に復帰します。| |       |                             | |POKE     |書式)POKE 式1,式2                   | |       |式1で指定するアドレスに、式2の値の下位1バイトを    | |       |書き込みます。                      | |       | 例)POKE $4000,$FF                   | |       |   ………$4000番地に$FFを書き込みます。       | |       |                             | |GOSUB     |書式)GOSUB ラベル                     | |       |ラベルの定義されているサブルーチンに、          | |       |実行の制御を移します。                  | |       |サブルーチンはRETURN文で終わっていなければなりません。  | |       | 例)GOSUB LABEL                     | |       |                             | |関数・手続の |書式)ラベル[{引数1,…,引数n}]               | |   呼び出し|ラベルの定義されている関数・手続に、引数の値を持って   | |       |実行の制御を移します。                  | |       |関数・手続RETURN文で終わっていなければなりません。    | |       |関数・手続を呼び出すには、ラベル名の後“[ ]”で囲んで  | |       |引数列を書きます。                    | |       |引数がないときも“[ ]”を付けてください。        | |       |引数は“,”ごで区切って複数個書こくとができます。    | |       |引数には、定数、変数、式が使えます。           | |       |詳しくは『サブルーチン・関数・手続の使い方』を      | |       |参照してください。                    | |       |                             | |CPOKE     |書式)CPOKE変数,式1{#}{,式3{#},……,式n{#}}        | |       |変数で指定するアドレスから、式の列のデータを書き込みます。| |       |変数の値は書き込んだデータ数だけ増加します。       | |       |式の値は下位1バイトを書き込みますが、          | |       |式の後に『#』がある場合は2バイトのデータを書き込みます。| |       |式が2個以上ある場合、式の間は『,』で区切ってください。 | |       | 例)CPOKE ADR,$00,D1#,'B'                | |       |   ………変数ADR の内容で指定されるアドレスから順に、 | |       |   $00、変数D1の値2バイト、『B』のASCIIコード $42を| |       |   書き込みます。                   | |       |                             | |CODE     |書式)CODE 数値1{#},{数値2{#},……,数値n{#}}       | |       |数値1〜数値nの値をプログラム中に展開します。      | |       |数値が2個以上ある場合は『,』で区切って記述してください。| |       |式の値は下位1バイトが展開されますが、          | |       |式の後に『#』を書くと2バイトが展開されます。      | |       | 例)CONST文との組み合わせで、疑似的なアセンブラ記述をした例。| |       |   CONST LDA=$86,RTS=$39                | |       |   CODE LDA=$0F,RTS                  | |       |                             | |CALL     |書式)CALL定数                      | |       |定数で指定したアドレスを、                | |       |マシン語のコール命令でコールします。           | |       |定数で指定したアドレスから始まるマシン語サブルーチンが  | |       |RTS命令 で終わっていれば、                | |       |CALL文の次に制御が戻ります。               | |       | 例)CALL $2000                     | ・―――――――――――――――――――――――――――――――――――――・                   関 数 ・―――――――――――――――――――――――――――――――――――――・ |■■関■数■■|■■■■■■■■■■説■■■■■■■明■■■■■■■■■■| |―――――――――――――――――――――――――――――――――――――| |拡張Kコンパイラには数値関数、入力関数、フォーマット関数の3種類の関数が | |あります。                                | |―――――――――――――――――――――――――――――――――――――| |  ABS    |ABS は数値関数で、式の値の絶対値を値とします。      | |       | 例)D=ABS(-5)                      | |       |   ……変数Dの値は5になります。           | |       |                             | |  ADR    |書式)ADR(単純変数)                    | |       |ADR は数値関数で、単純変数の値が格納されているアドレスを | |       |値とします。                       | |       | 例)POKE ADR(D),10                   | |       |   変数Dの値は10になります。             | |       |                             | |  HIGH   |書式)HIGH(式)                      | |       |HIGHは数値関数で、式の値の上位1バイトを値とします。   | |       | 例)H=HIGH($1234)                    | |       |   ……変数Hの値は$12になります。          | |       |                             | |  LOW    |書式)LOW(式)                       | |       |LOW は数値関数で、式の値の下位バイトを値とします。    | |       | 例)L=LOW($1234)                    | |       |   ……変数Lの値は$34になります。          | |       |                             | |  NOT    |書式)NOT(式)                       | |       |NOT は数値関数で、式の値の論理否定を値とします。     | |       |真は0、偽は1となります。                | |       |                             | |  PEEK   |書式)PEEK(式)                      | |       |PEEKは数値関数で、式で指定されるメモリ・アドレスの内容を | |       |値とします。                       | |       | 例)D=PEEK($6000)                    | |       |   ……変数Dの値は$6000の値と同じになります。    | |       |                             | |  RND    |書式)RND(式)                       | |       |RND は数値関数で、0〜(式−1)の範囲内の乱数を値とします。| |       | 例)D=RND(5)                      | |       |   ……変数Dに0〜4の乱数を代入します。       | |       |                             | |  SEX    |書式)SEX(式)                       | |       |SEX は数値関数で、1バイトの数を2バイトの数に拡張します。| |       | 例)D=SEX($FF)                     | |       |   ……変数Dは$FFFF(= -1)になります。        | |       |                             | |  SGN    |書式)SGN(式)                       | |       |SGN は数値関数で、式の符号により1,0,-1の値をとります。  | |       |式の値が1以上であれば関数の値は1、           | |       |−1以下であれば−1、0であれば0になります。      | |       | 例)IF SGN(X)=-1                    | |       |   THEN PRINT " Xハ マイナス";FI              | |       |   ……変数Xが負の場合、その値のメッセージを     | |       |     出力します。                  | |       |                             | |  INPUT   |書式)INPUT                        | |       |INPUT は入力関数で、キーボードから入力された値数を    | |       |値とします。                       | |       |入力できる数値は−32768〜23767の範囲の整数か、      | |       |$0000〜$FFFFの16進数で、                | |       |16進数の場合は先頭に『$』をつけて入力します。      | |       | 例)ID=INPUT                      | |       |   ……変数IDにキーボードから入力した値を代入します。 | |       |                             | |  GET    |書式)GET                         | |       |GET は入力関数で、キーボードをスキャンして        | |       |押されていたキーのASCII コードを値とします。       | |       |キーが押されていない場合は、0が値となります。      | |       | 例)KD=GET                       | |       |   ……変数KDに押されていたキーの ASCIIコードを   | |       |     代入します。                  | |       |                             | |  CHR$   |書式)CHR$(式)                      | |       |CHR$はフォーマット関数で、式の値を ASCIIコードとみなし、 | |       |その値に対応する文字を与えます。             | |       | 例)PRINT CHR$($41)                   | |       |   ……『A』を表示します。              | |       |                             | |  HEX$   |書式)HEX$(式)                      | |       |HEX$はフォーマット関数で、                | |       |式の値を16進数4桁に変換して与えます。          | |       | 例)PRINT HEX$(15)                   | |       |   ……表示は『000F』となります。           | |       |                             | |  HEX2$   |書式)HEX2$(式)                      | |       |HEX2$ はフォーマット関数で、               | |       |式の値を16進数2桁に変換して与えます。          | |       | 例)PRINT HEX$(15)                   | |       |   ……表示は『0FF』 となります。           | |       |                             | |  SPC$   |書式)SPC$(式)                      | |       |SPC$はフォーマット関数で、式の値の空白を与えます。    | |       | 例)PRINT "AB",SPC$(3),"CD"               | |       |   ……表示は『AB CD』 となります。         | ・―――――――――――――――――――――――――――――――――――――・